#pragma once
#include "DXAMLCommon.h"
#include "IPALDownloadResponseCallback.h"
#include "IPALMemory.h"
#include "IPALUploadProgressCallback.h"



struct IPALDownloadRequest
{
public:
	virtual ~IPALDownloadRequest() = 0;
	virtual XUINT32 AddRef() = 0;
	virtual XUINT32 Release() = 0;
	virtual HRESULT GetUrl(CXString **ppstrUrl) = 0;
	virtual HRESULT GetAbsoluteUri(IPALUri **ppAbsoluteUri) = 0;
	virtual HRESULT GetMethod( CXString **ppstrMethod) = 0;
	virtual HRESULT GetCallback(IPALDownloadResponseCallback **ppCallback) = 0;
	virtual HRESULT GetOptionFlags(unsigned int *pDownloadOptions) = 0;
	virtual HRESULT GetHeaders(CXString **ppstrHeaders) = 0;
	virtual HRESULT GetBuffer(IPALMemory **ppBuffer) = 0;
	virtual HRESULT GetUseDefaultCredentials(unsigned int *pbUseDefaultCredentials) = 0;
	virtual HRESULT GetUsername(CXString **ppstrUsername) = 0;
	virtual HRESULT GetPassword(CXString **ppstrPassword) = 0;
	virtual HRESULT GetAuthDomain(CXString **ppstrAuthDomain) = 0;
	virtual HRESULT GetUploadDataChunk(char **ppBuffer, unsigned int *pcbAvailable) = 0;
	virtual HRESULT GetUploadProgressCallback(IPALUploadProgressCallback **ppCallback) = 0;
};